//题目：
// 给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，如果两者相等，返回 true 。
// # 代表退格字符。
// 注意：如果对空文本输入退格字符，文本继续为空。
#include<iostream>
#include<string>

using namespace std;
//代码:
class Solution 
{
public:
    bool backspaceCompare(string s, string t) 
    {
        //对s和t都进行一次退格模拟，返回二者结果的比较
        //模拟方案：倒着遍历一遍s和t,判断#,对s、t进行选择性插入，最后处理一遍尾巴
        string tmps,tmpt;
        for(int i=s.size()-1;i>=0;i--)
        {
            if(tmps!="" && tmps[tmps.size()-1]=='#' && s[i]!='#')tmps.erase(tmps.begin()+tmps.size()-1);
            else tmps+=s[i];
        }
        for(int i=t.size()-1;i>=0;i--)
        {
            if(tmpt!="" && tmpt[tmpt.size()-1]=='#' && t[i]!='#')tmpt.erase(tmpt.begin()+tmpt.size()-1);
            else tmpt+=t[i];
        }
        //把尾巴处理干净
        while(tmps!="" && tmps[tmps.size()-1]=='#')tmps.erase(tmps.begin()+tmps.size()-1);
        while(tmpt!="" && tmpt[tmpt.size()-1]=='#')tmpt.erase(tmpt.begin()+tmpt.size()-1);

        //逆序————不是必要
        // reverse(tmps.begin(),tmps.end());
        // reverse(tmpt.begin(),tmpt.end());
        return tmps==tmpt;
    }
};